package seggio;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Calendar;
import java.util.StringTokenizer;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

/**
 *
 * @author ale
 */
public class ControlloVotante {

    public static final int VOTO_SENATO = 25;
    private File f;
    public String nome;
    public String cognome;
    public String datanascita;
    public String residenza;
    public int id;
    public int flag;
    public static String dataGiusta;

    public ControlloVotante(String n, String c, String dn, String r) throws FileNotFoundException, IOException {
        this.nome = n;
        this.cognome = c;
        this.datanascita = dn;
        this.residenza = r;
    }

    public String getNome() {
        return nome;
    }

    public String getCognome() {
        return cognome;
    }

    public String getData() {
        return datanascita;
    }

    public String getResidenza() {
        return residenza;
    }

    public int getVotato() {
        return flag;
    }

    public int getEta() {

        Calendar cal = Calendar.getInstance();
        StringTokenizer strTok = new StringTokenizer(datanascita);
        String annoNascita = strTok.nextToken("/");
        int annoCorrente = cal.get(Calendar.YEAR);

        int eta = annoCorrente - Integer.parseInt(annoNascita);

        return eta;
    }

    public boolean controllaVoto() {
        // 1 = gia votato | 0 deve votare
        if (getVotato() == 1) {
            return false;
        } else {
            return true;
        }
    }


    public boolean controllaVotoPerSenato() {
        if (getEta() < VOTO_SENATO) {
            return false;
        } else {
            return true;
        }
    }

    public boolean controllaVotanteSeInLista(String CodiceF) {

        String a = null;

        try {
            File fXmlFile = new File("src/config/listaElettori.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);

            doc.getDocumentElement().normalize();

            NodeList nList = doc.getElementsByTagName("elettore");

            //vefifico che il codice fiscale che passo come parametro è presente dentro all'XML
            for (int temp = 0; temp < nList.getLength(); temp++) {

                Node nNode = nList.item(temp);

                if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                    Element eElement = (Element) nNode;                    

                    if (eElement.getElementsByTagName("codiceFiscale").item(0).getTextContent().equals(CodiceF)) {
                        return true;
                    } else { }
                }
            }
        } catch (ParserConfigurationException | SAXException | IOException e) {
            return false;
        }
        return false;
    }
}